package com.telit.firecommand.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * comm_fire_alarm
 * @author
 */
@ApiModel
@Data
public class CommFireAlarm implements Serializable ,Comparable<CommFireAlarm>{
    /**
     * 主键ID
     */
    @ApiModelProperty(value="主键ID")
    private Long id;

    /**
     * 接警人ID
     */
    @ApiModelProperty(value="接警人ID")
    private Long recieverId;

    /**
     * 接警时间
     */
    @ApiModelProperty(value="接警时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    private Date recieveTime;

    /**
     * 发现时间
     */
    @ApiModelProperty(value="发现时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    private Date findTime;

    /**
     * 发现人姓名
     */
    @ApiModelProperty(value="发现人姓名  必填")
    private String finderName;

    /**
     * 发现人ID
     */
    @ApiModelProperty(value="发现人ID  必填")
    private Long finderId;

    /**
     * 扑灭时间
     */
    @ApiModelProperty(value="扑灭时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    private Date endTime;

    /**
     * 发现人联系电话
     */
    @ApiModelProperty(value="发现人联系电话")
    private String telephoneNumber;

    /**
     * 经度
     */
    @ApiModelProperty(value="经度")
    private String longitude;

    /**
     * 纬度
     */
    @ApiModelProperty(value="纬度")
    private String latitude;

    /**
     * 完整行政区划代码
     */
    @ApiModelProperty(value="完整行政区划代码")
    private String districtCode;

    /**
     * 省代码
     */
    @ApiModelProperty(value="省代码")
    private String province;

    /**
     * 市代码
     */
    @ApiModelProperty(value="市代码")
    private String city;

    /**
     * 县代码
     */
    @ApiModelProperty(value="县代码")
    private String county;

    /**
     * 乡代码
     */
    @ApiModelProperty(value="乡代码")
    private String countryside;

    /**
     * 村代码
     */
    @ApiModelProperty(value="村代码")
    private String country;

    /**
     * 详细地址
     */
    @ApiModelProperty(value="详细地址")
    private String detailAddress;

    /**
     * 内容
     */
    @ApiModelProperty(value="内容")
    private String content;

    /**
     * 多媒体路径
     */
    @ApiModelProperty(value="多媒体路径")
    private String imageUrl;

    /**
     * 来源
     */
    @ApiModelProperty(value="来源")
    private String resource;

    /**
     * 状态：1：护林员；2：飞手；3：视频监控；4：卫星；5：无人机；6：电话接警；7：防火管理员
     */
    @ApiModelProperty(value="状态")
    private String status;


    /**
     * 火灾级别
     */
    @ApiModelProperty(value="火灾级别")
    private String fireLevel;

    /**
     * 确认人ID
     */
    @ApiModelProperty(value="确认人ID")
    private Long confirmId;

    /**
     * 确认时间
     */
    @ApiModelProperty(value="确认时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    private Date confirmTime;

    /**
     * 处置人ID
     */
    @ApiModelProperty(value="处置人ID")
    private Long managementId;

    /**
     * 处置时间
     */
    @ApiModelProperty(value="处置时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    private Date managementTime;

    /**
     * 完成处置人ID
     */
    @ApiModelProperty(value="完成处置人ID")
    private Long finishId;

    /**
     * 完成处置时间
     */
    @ApiModelProperty(value="完成处置时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    private Date finishTime;

    /**
     * 作用，1真实数据，2演练数据
     */
    @ApiModelProperty(value="作用，1真实数据，2演练数据")
    private String action;

    /**
     * 火情判别类型 0.待判别 1.真实火情 2.疑似火情 3.误报
     */
    @ApiModelProperty(value="火情判别类型 0.待判别 1.真实火情 2.疑似火情 3.误报")
    private Integer fireJudgmentType;

    /**
     * 是否删除 0未删除 1已删除
     */
    @ApiModelProperty(value="是否删除 0未删除 1已删除")
    private Integer hasDelete;

    /**
     * 设备ID
     */
    @ApiModelProperty(value="设备ID")
    private Long deviceId;

    /**
     * 合并操作源火情id
     */
    @ApiModelProperty(value="合并操作源火情id")
    private Long originFireId;

    /**
     * 误报说明
     */
    @ApiModelProperty(value="误报说明")
    private String fakeDescription;

    /**
     * 误报类型
     */
    @ApiModelProperty(value="误报类型")
    private String faketype;

    /**
     * 海拔
     */
    @ApiModelProperty(value="海拔")
    private String altitude;

    /**
     * 坡度
     */
    @ApiModelProperty(value="坡度")
    private String slope;

    /**
     * 坡向
     */
    @ApiModelProperty(value="坡向")
    private String slopedirection;

    /**
     * 坡位
     */
    @ApiModelProperty(value="坡位")
    private String slopeposition;

    /**
     * 地类
     */
    @ApiModelProperty(value="地类")
    private String landtype;

    /**
     * app确认火情上传文件路径
     */
    @ApiModelProperty(value="app确认火情上传文件路径")
    private String appImageUrl;


    //------------------------------------------------扩展字段--------------------------------//

    /**
     * 多媒体url
     */
    @ApiModelProperty(value="多媒体url")
    private List<String> mediaUrlList;

    /**
     * 设备名称
     */
    @ApiModelProperty(value = "设备名称")
    private String deviceName;
    /**
     * 区域名称
     */
    @ApiModelProperty(value = "区域名称")
    private String districtName;

    /**
     * 报警源名称
     */
    @ApiModelProperty(value = "报警源名称")
    private String sourceName;

    /**
     * 接警人姓名
     */
    @ApiModelProperty(value="接警人姓名")
    private String recieverName;

    /**
     * 接警人单位
     */
    @ApiModelProperty(value="接警人单位")
    private String recieverUnit;

    /**
     * 确认人姓名
     */
    @ApiModelProperty(value="确认人姓名")
    private String confirmName;

    /**
     * 确认人单位
     */
    @ApiModelProperty(value="确认人单位")
    private String confirmUnit;

    /**
     * 处置人姓名
     */
    @ApiModelProperty(value="处置人姓名")
    private String managementName;

    /**
     * 处置人单位
     */
    @ApiModelProperty(value="处置人单位")
    private String managementUnit;

    /**
     * 完成处置人姓名
     */
    @ApiModelProperty(value="完成处置人姓名")
    private String finishName;

    /**
     * 完成处置人单位
     */
    @ApiModelProperty(value="完成处置人单位")
    private String finishUnit;

    /**
     * 上报人
     */
    @ApiModelProperty(value="上报人")
    private String reportName;

    @ApiModelProperty(value = "前后秒的视频rtsp流地址")
    private String videoRtspUrl;

    @ApiModelProperty(value = "是否是假火情，1是，0否")
    private Integer hasFake;

    @ApiModelProperty(value = "电话接警人")
    private String mobileReceiverName;

    @ApiModelProperty(value = "第三方火情推送id")
    private String thirdId;

    private static final long serialVersionUID = 1L;

    @Override
    public int compareTo(CommFireAlarm commFireAlarm) {
        return this.finishTime.compareTo(commFireAlarm.getFindTime());
    }

}